package com.jfinaldemo.controller;

import com.jfinal.aop.Before;
import com.jfinal.aop.ClearInterceptor;
import com.jfinal.aop.ClearLayer;
import com.jfinal.core.Controller;
import com.jfinaldemo.interceptor.ActionTestInterceptor;
import com.jfinaldemo.interceptor.ControllerTestInterceptor;

@Before(ControllerTestInterceptor.class) // Controller级别Interceptor的定义
public class InterceptorController extends Controller {

	//  共有 Global、Inject、Class、Method 四层拦截器
	//  清除只针对 Clear 本身所处层的向上所有层，本层与下层不清除
	//  不带参数时清除所有拦截器，带参时清除参数指定的拦截器在某些应用场景之下，需要移除 Global 或 Class
	// 拦截器。例如某个后台管理系统，配置了一个全局的权限拦截器，但是其登录 action 就必须清除掉她，否则无法完成登录操作，以下是代码示例：

	@Before(ActionTestInterceptor.class) // Action级别Interceptor的定义
	public void index() {

		System.out.println("我是中间方法");
		renderText("success");
	}

	@ClearInterceptor
	// 清除上一级的拦截器（Controller级别的）
	public void destroyControllerInterceptor() {

		System.out.println("清除上一级的拦截器（Controller级别的）");
		renderText("success");
	}

	@ClearInterceptor(ClearLayer.ALL) // 清除多级Interceptor
	public void destroyAllInterceptor() {

		System.out.println("清除多级Interceptor");
		renderText("success");
	}

}
